Methods and apparatus for self-inverting turbo code interleaving with high separation and dispersion

ABSTRACT

The present invention provides methods for generating self-inverting turbo code interleavers having high separation and high dispersion characteristics. Methods are provided for deterministically generating self-inverting turbo code interleavers from a specification for an existing non-self-inverting interleaver. Methods are also provided for randomly generating self-inverting turbo code interleavers. The present invention also provides methods and apparatus for encoding digital data and communicating the digital data using self-inverting turbo code interleavers/de-interleavers.

[0001] This application claims the benefit of U.S. provisional patentapplication No. 60/382,493 filed on May 21, 2002, which is incorporatedherein and made a part hereof by reference.

BACKGROUND OF THE INVENTION

[0002] 1. Field of the Invention

[0003] The present invention is directed to digital communicationssystems, processes, apparatus and related software utilizingerror-correcting codes. More particularly, the invention relates toself-inverting interleavers/de-interleavers for use with wirelesscommunication systems that rely on turbo codes to perform signalerror-correction. Accordingly, the general objects of the invention areto provide novel systems, methods, apparatus and software of suchcharacter.

[0004] 2. Description of the Related Art

[0005] The field of error control coding was revolutionized in 1993 withthe invention of turbo codes. With the use of turbo codes, it ispossible to achieve extremely low error probabilities at low signal tonoise ratios with decoding circuitry that is within the realm ofpractical implementation. A turbo code system can be thought of as a wayof forming a very strong code from a suitable combination of two or moreweak codes. The goal is to achieve the performance of the strong codewith the decoding complexity implied by the weak codes. One importantfactor in the success of a turbo code design is that most of the errorsequences that cause one of the constituent codes to fail must bedecoded correctly by the other constituent code (this property beingimplied by the constraint that the overall code must be stronger thaneach individual code). The most basic turbo code system operated by (1)encoding a stream of data using one recursive convolutional code, (2)permuting (“interleaving”) the same stream of data, (3) encoding thepermuted data using a recursive convolutional encoder, and (4)transmitting both streams as the signal.

[0006] At the receiving end of the basic turbo code system, decodingproceeded iteratively. In particular, a first decoder decoded thereceived demodulated sequence for the first convolutionally codedstream. Then, the resulting estimates (and associated estimates of thereliability of those estimates) were interleaved and fed to a seconddecoder, which used them as an aid in decoding the secondconvolutionally encoded sequence. The resulting estimates for the seconddecoder were then de-interleaved and fed to the first decoder for thefirst sequence. Finally, they were used in a second pass of decoding.This procedure may have continued for several iterations as desired.

[0007] One important feature of turbo code communications systems is anelement referred to as an “interleaver” (or, alternatively, “permuter”or “shuffler”). The general function of an interleaver is to receive aset of bits or symbols and to rearrange them into a different order.

[0008] In designing a useful interleaver there are two competing goals:the interleaver should have high performance and it should have lowimplementation complexity. Several different design rules have beensuggested for the design of turbo code interleavers and two interleaverattributes are widely accepted as reliable indicia of interleaverperformance. The first is “separation” which requires that two symbolsthat are close together in the original sequence should be far apart inthe interleaved sequence. To a first order approximation, the influenceof one symbol on another declines as the distance between them in thesequence increases. It is, therefore, desirable to preclude thepossibility that two erroneous symbols are in close proximity in boththe original and interleaved sequences. The second is “dispersion.” Alarge dispersion is desirable because the error probability in a turbocode system is driven by a combination of several different types ofbasic failure mechanisms. The use of interleavers with a largedispersion reduces the number of dominant error mechanisms.

[0009] These two attributes may be quantified as follows. The“separation” or “s-parameter” of an interleaver is the smallest numbersuch that two inputs to the interleaver at a distance less than s fromeach other are guaranteed to be mapped, by the interleaver, to outputsthat are at distance at least s apart. Interleavers may be representedby an interleave scatter plot, which is a two-dimensional plot in whicha point is plotted for every pair (i, π(i)). Equivalently, the sameinformation may be expressed as an n×n matrix containing a 1 at everypoint of the interleaver scatter plot and 0 elsewhere; this matrix willbe referred to as the permutation matrix associated with theinterleaver. If the interleaver has an s-parameter value of s0, then abox centered at an interleaver point and extending a distance s0 in eachdirection will include no other interleaver points.

[0010] Dispersion may be expressed in terms of displacement vectors(Δx=j−i, Δy=π(j))−π(i) for any pair of inputs i j where i<j. Dispersionis the number of distinct displacement vectors that occur out of then(n−l)/2 possible vectors. The “normalized dispersion” is the ratio ofthe actual dispersion to the maximum possible dispersion.

[0011] The simplest known interleavers are “rectangular” or “block”interleavers. These interleavers store data streams into a rectangulararray row by row, and read out the stored data column by column. Amongpreviously known interleavers, a subclass of the block interleavers areeasily shown to be self-inverting. An N×M block interleaver on blocks ofsize n=N M has permutation function given by π(i)=(M. i) mod (N M−1) ifwe number the positions from 0 to n−1 rather than from 1 to n. Theself-inverting constraint requires that π(π(i))=i. This condition issatisfied if N=M, as then π(π(i))=π(M. i) mod (NM−1)=(M^({circumflex over ( )})2 i) mod (M{circumflex over ( )}2−1)=i.

[0012] It can be shown that the normalized dispersion of blockinterleavers approaches zero. Such an interleaver, however, has ans-parameter of {square root}{square root over (n)} which is the highestpossible s-parameter for an interleaver. Nonetheless, the dispersion ofthis interleaver is so low that it gives poor performance in practice.Furthermore, it is known that block interleavers give markedly inferiorperformance in turbo coding applications because such interleavers aresubject to a significant “error floor” problem, in which errorprobability decays very slowly with increasing signal to noise ratiobeyond a given point. This too is a major reason for the poorperformance of such block interleavers.

[0013] Interleavers are used in various places in communicationssystems. Interleavers with good properties for some applications do notnecessarily work well in the turbo coding framework. Various propertieshave been used to express the quality of an interleaver. For example,separation is a widely used measure of interleaver quality. The blockinterleavers discussed above can provide a very good separation measure.However, for turbo codes, interleavers are needed which simultaneouslyhave several good qualities. For example, it is desirable forinterleavers for turbo coding have good separation and at least oneother good property, such as dispersion. None of the related prior artinterleavers simultaneously offer he qualities of high separation, largedispersion and self-inversion.

[0014] As a result of such deficiencies, recent interleaver designefforts have focused on identifying interleavers that perform betterthan the basic block interleavers described above. For example, muchwork has been done on pseudo-random or deterministic interleavers, i.e.,on the production of deterministic rules that succinctly describe aninterleaver that performs well. These include Berrou-Glavieuxinterleavers, Welch-Costas interleavers, JPL interleavers,Takeshita-Costello interleavers, and others. The advantages offered bydeterministic interleavers are based on the recognition thatdeterministic interleavers consume fewer system resources compared tounstructured or random interleavers. This advantage, however, is onlybeneficial if the deterministic specification can be efficientlyimplemented in the decoder. For many applications, such as a turbocoding chip, the processing of algorithmic instructions with interleavercircuitry is either not feasible or itself consumes excessive resources.

[0015] One significant deficiency associated with most conventionalinterleavers is that they result in considerable circuit complexity whenphysically implemented in a communications system. Naturally, thiscomplexity also increases the cost of implementing an effectiveinterleaver. In part, this difficulty arises from the fact thatconventional interleaver design often starts with the derivation of anelegant mathematical formula, and then seeks a circuit design toimplement that formula. Too often, this approach results in acomplicated, inefficient and expensive circuit despite the fact that itmay perform in accordance with a relatively simple and elegantmathematical formula.

[0016] This problem is further exacerbated by the fact that, for eachinterleaver designed and implemented, a compatible de-interleaver mustalso be designed and implemented to reverse the interleaving processduring use of a given system. Thus, the negative impact of relying onunnecessarily complex circuitry is typically two-fold.

[0017] There is, accordingly, a need in the art for novel and morecost-effective methods, systems and apparatus for reducing errors inturbo code communications systems. Such methods and apparatus shouldyield simpler, or at least less expensive, implementinginterleaver/de-interleaver circuitry while still yielding a level ofeffectiveness that is equal to or greater than conventional turbo codeinterleaving methods and apparatus.

[0018] The self-inverting turbo code interleavers of the presentinvention provide the foregoing advantages. Numerous other advantagesand features of the present invention will become apparent to those ofordinary skill in the art from the following description of the exampleembodiments, from the claims and from the accompanying drawings.

SUMMARY OF THE INVENTION

[0019] The present invention satisfies the above-stated needs andovercomes the above-stated and other deficiencies of the related art byproviding methods, systems and apparatus for reducing the impact oferrors in digital communications systems through the use ofself-inverting interleavers/de-interleavers. In particular, the presentinvention is directed to self-inverting interleaving in which both highseparation and high dispersion are achieved. The present inventionoffers the possibility of nearly halving the amount of necessarycircuitry to perform interleaving and de-interleaving functions in aturbo code system. For example, significant advantages are achieved inthat one physical implementation of dual-function circuitry can beutilized to perform both interleaving and de-interleaving functions.This eliminates the need of the prior art to provide separate circuitryto perform each of these functions independently and, thereby, reducesthe amount of necessary circuitry by nearly fifty percent.

[0020] The present invention stems from the realization that there isoften little correspondence between the simplicity/complexity of amathematical function and the actual complexity of the circuitrynecessary to implement that function. Ideally,interleaver/de-interleaver designs in accordance with the presentinvention should have high separation and dispersion, and, in addition,should be easy to implement. Thus, the present invention lends designprimacy to the goal of reducing circuit complexity rather than strivingfor concise mathematical expressions. For example, the present inventionenables a large gate savings (by a factor of 2 or more) in theinterleaver implementation.

[0021] The present invention provides methods of generating aself-inverting turbo code interleaver from an existingnon-self-inverting turbo code interleaver specification. In an exampleimplementation of the invention, a plurality of original cycles of thenon-self-inverting turbo code interleaver specification are identified.The original cycles specify a mapping of an input bit position to arespective output bit position for raw data bits to be coded. The lastbit identified in each cycle is mapped to an output positioncorresponding to the first bit in said original cycle. Each originalcycle containing more than two bits is broken into new cycles, such thateach new cycle contains one pair of bits. The pair of bits for eachsuccessive cycle being taken from successive pairs of bits of theoriginal cycle beginning with the first bit in each cycle. Each originalcycle which has an odd number of bits provides: (i) at least one newcycle containing a pair of bits; and (ii) one new cycle having a singlebit. The new cycles define the mapping between the input and output bitpositions for said self-inverting turbo code interleaver.

[0022] The self-inverting turbo code interleaver may have a normalizeddispersion of at least 0.33 and/or a normalized s-parameter of at least33. The original non-self-inverting interleaver may be a blockinterleaver. The block length of the original interleaver may be atleast 1024.

[0023] The present invention further provides methods for randomlygenerating a self-inverting turbo code interleaver. An exampleimplementation of such a method is as follows:

[0024] (a) setting a minimum target separation value S, such that twoinput bits less than S apart at the input are at least S apart at theoutput of the interleaver;

[0025] (b) mapping a first input bit position to a randomly chosenoutput bit position j;

[0026] (c) constraining input position j to map to the first input bitposition, j being randomly chosen from all allowed output positionswhich do not violate the target separation value S;

[0027] (d) for each of the remaining input bits, in sequence:

[0028] computing all remaining allowed output bit positions of eachsuccessive input bit that does not violate the target separation value Swhen an input bit position corresponding to the allowed output bitposition is constrained to map to an output position corresponding tothe respective successive input bit position;

[0029] choosing one of the remaining allowed output bit positions of therespective input bit at random;

[0030] constraining the input bit position corresponding to the chosenoutput bit to map to an output bit position corresponding to therespective successive input bit position.

[0031] In the event that step (d) results in failure when no remainingoutput bit positions are allowed for one of the remaining input bits,discarding results of steps (b-d) and repeating steps (b-d) until all ofthe input bits are mapped to corresponding allowed output values.

[0032] Alternatively, in the event that step (d) results in failure whenno remaining output bit positions are allowed for one of the remaininginput bits, discarding results of step (d) and repeating step (d) untilall of said remaining input bits are mapped to corresponding allowedoutput values.

[0033] In a further example implementation, in the event that step (d)results in failure when no remaining output bit positions are allowedfor one of the remaining input bits, discarding results of step (d) fora selected number of m previous bits in the sequence prior to saidfailure and repeating step (d) beginning with said mth previous bit insaid sequence. The number m of previous bits may vary with eachsuccessive iteration of step (d).

[0034] The present invention is further directed to methods andapparatus for encoding a data stream using self-inverting turbo codeinterleavers. Further, methods and apparatus are provided forcommunicating a data stream, which utilize self-inverting turbo codeinterleavers/de-interleavers to perform error-correction on the datastream sent via the communications system. The self-inverting turbo codeinterleaver/de-interleaver of the present invention has at least one ofa normalized s-parameter of at least 33 and/or a normalized dispersionof at least 0.5. The “normalized” dispersion is the ratio of the actualdispersion to the maximum possible dispersion. The “normalized”s-parameter is the ratio of the actual s-parameter to the maximumpossible s-parameter, and may be expressed as 100(s/{square root}{squareroot over (n)}).

[0035] In an example embodiment of the invention, methods and apparatusare provided for encoding and communicating digital data fortransmission. In this example embodiment, a parallel encoding scheme isused. An original data stream is encoded at a first encoder with a firstconvolutional code to produce a first convolutionally coded data stream.A copy of the original data stream is interleaved at a self-invertingturbo code interleaver to produce an interleaved data stream. Theself-inverting turbo code interleaver has at least one of a normalizeds-parameter of at least 33 and a normalized dispersion of at least 0.5.The interleaved data stream is encoded at a second encoder with a secondconvolutional code to produce a second convolutionally coded datastream. The first convolutionally coded data stream and the secondconvolutionally coded data stream are then combined to provide acombined data stream. The combined data stream is then modulated at amodulator for transmission via a communications network.

[0036] The communications system may comprise at least one of a globalcommunication system, an Internet, an extranet, a wide area network, alocal area network, a wireless network, a combination of interconnectednetworks of various types, or the like.

[0037] In an alternate embodiment of the invention, the normalizeddispersion may be at least 0.67 and the normalized s-parameter may be atleast 50.

[0038] At the receiver side of the communications system, the modulatedcombined data stream is received at a receiver. The modulated combineddata stream is demodulated at a demodulator. The first convolutionallycoded data stream is decoded at a first decoder to produce firstreliability estimates for raw data bits of the original data stream. Thefirst reliability estimates are de-interleaved at a first de-interleaverto produce de-interleaved first reliability estimates. The secondconvolutionally coded data stream is decoded at a second decoder usingthe de-interleaved first reliability estimates to produce secondreliability estimates for the raw data bits of the original data stream.The second reliability estimates are then de-interleaved at a secondde-interleaver to provide de-interleaved second reliability estimates. Afeedback loop is provided for feeding the de-interleaved secondreliability estimates into the first decoder for second pass decodingand de-interleaving of the first and second convolutionally coded datastreams to recover the original data stream.

[0039] Those skilled in the art will appreciate that additional decodingand de-interleaving passes may be performed, as necessary, to recoverthe original data stream.

[0040] In a further example embodiment in accordance with the presentinvention, the encoding of the digital data stream may occur in a serialmanner. In this example embodiment, the original data stream is encodedat a first encoder with a first convolutional code to produce a firstconvolutionally coded data stream. This first convolutionally coded datastream (rather than the original data stream as in the exampleembodiment described above) is then interleaved using a self-invertingturbo code interleaver having at least one of a normalized s-parameterof at least 33 and a normalized dispersion of at least 0.5 to produce aninterleaved data stream. The interleaved data stream is then encoded ata second encoder with a second convolutional code to produce a secondconvolutionally coded data stream. The first convolutionally coded datastream and the second convolutionally acoded data stream are thencombined to provide a combined data stream. This combined data stream isthen modulated for transmission via a communications network. Therecovery of the original data stream at the receiver side occurs in thesame manner as described in connection with the parallel encoding schemedescribed above.

[0041] The interleavers provided by the present invention may beimplemented in the form of a semiconductor chip for performing turbocode error-correction wherein the chip includes aninterleaver/de-interleaver for interleaving a data stream prior totransmission via the communications system, wherein theinterleaver/de-interleaver having a normalized s-parameter of at least33 and a normalized dispersion of at least 0.5, and wherein theinterleaver/de-interleaver also de-interleaves the received data streamto thereby recover the data stream from the received data stream. Thesemiconductor chip may be a processor chip with a demodulator, adetector, a decoder, and the like. The chip may also be a cellulartelephone integrated circuit.

[0042] For illustration purposes, a simplified example of a turbo codingmethod is provided. Assume that raw data bits 10011 are input into anencoder block. The encoder block, using a turbo code, takes the five rawdata bits 10011 and outputs, for example, 15 data bits. The turbo codemay use two smaller constituent codes, code 1 and code 2. The raw databits are sent through code 1, providing 5 “new” parity bits of output.For example, for code 1, input of raw data bits 10011 may provide 1001101110 output. For code 2, the raw data bits are fed in, but they arescrambled first (i.e., interleaved). This portion of the encoder blockis the “turbo code interleaver”. As an example, the scrambling rule mayrequire that bit 1 moves to bit 4, bit 4 moves to bit 2, bit 2 moves tobit 1, and bits 3 and 5 interchange. This scrambling rule may be writtenas (1->4->2) (3->5), where the last bit in each cycle is understood tomap back to the first (2->1 and 5->3). This may sometimes be writtenwithout the arrows as (1 4 2) (3 5). Therefore, the raw data bits 10011would be scrambled to provide 01110, which is fed into code 2. As anexample, code 2 may output 01110 11000 (i.e., that the parity bits ofcode 2 are 11000 based on the scrambled input). The overall output ofthis (relatively small) turbo coding system would be 10011 01110 11000.The scrambled raw data (i.e., 01110) is usually not sent in addition tothe true raw data (i.e., 10011). Once this data has been output by theturbo coder, there are many other operations that are performed on thedata as will be apparent to those skilled in the art which are notpertinent to the present invention (e.g., modulating the data with acarrier signal, and the like). The foregoing turbo coding example is asimplistic example and does not describe a self-inverting interleaver.An interleaver is self-inverting if and only if it interleaves the rawdata by interchanging bit positions with one another or leaving bits inthe original position. The above example is not self-inverting, as itsends bit 1 to bit 4, but does not send bit 4 to bit 1.

BRIEF DESCRIPTION OF THE DRAWINGS

[0043] The present invention will hereinafter be described inconjunction with the appended drawing figures, wherein like numeralsdenote like elements, and:

[0044]FIG. 1 shows a block diagram of an example embodiment of thepresent invention;

[0045]FIG. 2 shows a block diagram of a further example embodiment ofthe present invention; and

[0046]FIG. 3 shows an example scatter plot for an 11×11 self-invertinginterleaver.

DETAILED DESCRIPTION

[0047] The ensuing detailed description provides exemplary embodimentsonly, and is not intended to limit the scope, applicability, orconfiguration of the invention. Rather, the ensuing detailed descriptionof the exemplary embodiments will provide those skilled in the art withan enabling description for implementing an embodiment of the invention.It should be understood that various changes may be made in the functionand arrangement of elements without departing from the spirit and scopeof the invention as set forth in the appended claims.

[0048]FIG. 1 shows an example embodiment of a communication system 10 inaccordance with the invention which utilizes a parallel encoding scheme.Data stream 5 is split to provide parallel inputs into the system 10.The data stream 5 is encoded at encoder 12 with a first recursiveconvolutional code to create a first convolutionally coded data stream.Simultaneously, the data stream 5 is interleaved atinterleaver/de-interleaver 14 using a self-inverting interleaver inaccordance with the present invention. Then, the interleaved data streamis output from the interleaver 14 and is encoded at a second encoder 18with a second recursive convolutional code to create a secondconvolutionally coded data stream. The first convolutionally coded datastream from the first encoder 12 and the second convolutionally codeddata stream from the second encoder 18 are then combined at combiner 17and then modulated for transmission at modulator 15.

[0049] The modulator 15 encompasses all operations required to turn theencoded bit stream into a signal suitable for transmission over acommunication channel. These operations may include, but are not limitedto, scrambling, symbol interleaving, mapping to signal space symbols,pilot insertion, cyclic prefix addition, and the like. These areelements that are not essential to the current invention and are alsofamiliar to those skilled in the art.

[0050] The signal output from the modulator is provided to a transmitter16 for transmission to a receiver 20. The signal is received at thereceiver 20. The received signal is demodulated at demodulator 21 toprovide the combined data stream including the first and secondconvolutionally encoded data streams. Those skilled in the art willappreciate that the demodulator 21 provides functions analogous to thoseof the modulator 15. A first decoder 22 decodes the firstconvolutionally coded stream, producing first reliability estimates foreach of the underlying raw data bits of the original data stream. Thesefirst reliability estimates from the decoding of the firstconvolutionally encoded data stream are scrambled atinterleaver/de-interleaved 24 using a self-inverting interleaver inaccordance with the present invention. These scrambled (i.e.de-interleaved) estimates are input into a second decoder 26 for use indecoding the second convolutionally coded data stream. Decoder 26produces second reliability estimates for each of the underlying rawdata bits of the original data stream. Finally, de-interleaving of thesesecond reliability estimates occurs at interleaver/de-interleaver 28.The results from de-interleaver 28 are fed back to the first decoder 22,and are used in a second pass of decoding. This procedure may berepeated for several iterations, as desired, to recover the originaldata stream 5′ at the output of the communication system 10.

[0051] An example embodiment of a communication system in accordancewith the invention which utilizes a serial encoding scheme is shown inFIG. 2. Data stream 5 is encoded at encoder 12 with a first recursiveconvolutional code to create a first convolutionally coded data stream.The first convolutionally coded data stream is then interleaved atinterleaver/de-interleaver 14 using a self-inverting interleaver inaccordance with the present invention. Then, the interleaved data streamis output from the interleaver 14 and is encoded at a second encoder 18with a second recursive convolutional code to create a secondconvolutionally coded data stream. The first convolutionally coded datastream, in addition to being provided to interleaver 14, is also outputfrom the first encoder 12 and combined with the second convolutionallycoded data stream from the second encoder 18 at combiner 17. Thecombined data stream from combiner 17 is then modulated for transmissionat modulator 15 as discussed above to provide a signal for transmissionfrom transmitter 16. The functions of the receiver 20, demodulator 21,first decoder 22, interleaver/de-interleaver 24, second decoder 26, andinterleaver/de-inerleaver 28 remain as described in connection with theexample embodiment shown in FIG. 1 As noted above, one aspect of thepresent invention is the use of “self-inverting”interleavers/de-interleavers. The quality of self-inversion is definedas follows: given any permutation, there is a least number i such thatthe permutation applied i times leaves the data in the original orderwhere i is the period of permutation. For example, the small turbocoding interleaver provided as an example above was defined by (1->4->2)(3->5), which has a period of six. A self-inverting interleaver appliedto interleaved data gives back the original input. Therefore,self-inverting interleavers have a period two permutation (i.e. whereina second application of the permutation restores all elements to theiroriginal places).

[0052] Self-inverting interleavers can also be expressed in terms of aninterleaver scatter plot/permutation matrix. FIG. 3 shows an examplescatter plot diagram 100 for an 11×11 self-inverting interleaver (i.e.an interleaver having a period of 2). The plot 100 of a self-invertinginterleaver is symmetrical about a diagonal line running from the originat the lower left-hand corner toward the top right at an angle of 45degrees. This line is shown by “o” in FIG. 3, which designates all theboxes for which x=y. In the diagram shown in FIG. 3, the boxes on thex-axis are numbered 1 to 11, going from left to right. The boxes on they-axis are labeled 1 to 11 going from bottom to top. An “X” is given tospecify the particular pattern of the example interleaver used. Forexample, the “X” in box 101 (x=1, y=4) indicates that position I goingin to the interleaver is mapped to bit 4 at the output. Theself-inverting property then demands that position 4 in maps to position1 out, i.e., that there is an “X” in box 102 (x=4, y=1).

[0053] In the example shown in FIG. 3, an “X” is shown in box 103 (x=5,y=5), indicating that position 5 is a fixed point (i.e. the input to theinterleaver is not changed), which is an acceptable characteristic of aself-inverting interleaver. Also note that there is exactly one X ineach row and column, which is a required characteristic of anyinterleaver.

[0054] Those skilled in the art should appreciate that the scatter plot100 shown in FIG. 3 is provided solely for purposes of illustrating theself-inverting properties of the interleaver. The interleaver used togenerate the scatter plot of FIG. 3 was generated without regard tooptimizing its dispersion characteristics or its s-parameter (i.e., thes-parameter of the interleaver illustrated in FIG. 3 is s=1).

[0055] Those skilled in the art should also appreciate that the presentinvention may be implemented using substantially self-invertinginterleavers having a permutation matrix that is less than 100%symmetrical about the diagonal (e.g., interleavers having between 90%and 99.999% symmetry about the diagonal). Such interleavers would not betruly self-inverting, as they would require small tweaks to regain theoriginal data. However, such interleavers would still provide many ofthe advantages and benefits of the present invention.

[0056] One significant benefit of using a self-inverting interleaver isthat valuable chip real estate and other resources can be saved by usingidentical interleavers/de-interleavers. By utilizing a self-invertinginterleaver (one in which the interleaver circuitry can also be used asthe de-interleaver circuitry) system resources can be substantiallyreduced relative to conventional designs. Thus, in any application withsignificant circuitry, memory, or other resources connected with theinterleaver, the required resources for each interleaver/de-interleaverare nearly halved.

[0057] The set of self-inverting interleavers that have period two isdistinguished in that it forms a very small fraction of all interleaverson blocks of size n, for larger values of n. The total number ofinterleavers on blocks of size n is n!=n (n−1) (n−2) . . . 3 2. Thisnumber rises very quickly (much faster than exponentially) withincreasing n. The number of self-inverting interleavers of size ncontaining no fixed points (that is, no points that are mapped tothemselves by the interleaver) is (n choose n/2) (n/2)!/2^((n/2)), andthe total number of self-inverting interleavers (with fixed pointsallowed) is Σ_(m) (n choose m) (m choose m/2) (m/2)!/2^(m/2). Thisquantity can be shown to be approximately (n/2)! (more precisely, thequantity is (n/2)!^((l+ε)) where ε tends to 0) when n becomes large.Thus the number of self-inverting interleavers on blocks of size n isapproximately the same as the total number of interleavers on blocks ofsize n/2.

[0058] On the other hand, although the fraction is small, the actualnumber of such self-inverting interleavers is large in absolute terms,and, in particular, is large enough to contain self-invertinginterleavers that perform well when used in turbo coding systems.Consider first any algorithm that produces a “good” interleaver for ablock of length n/2, that is, the interleaver has a high s-parameter anda high dispersion. If an interleaver of block size n is formed by usingtwo such interleavers, with the n/2 inputs from each set mapped to then/2 outputs from the other set, and if these mappings are collected inthe appropriate way, we arrive at a symmetric permutation matrix. Itsdispersion is the same as that of the original length n/2 interleaver,so its normalized dispersion is approximately ¼ as large. Thes-parameter constraint is satisfied by any pair of inputs from the sameset. It is possible for this first construction that the s-parameterconstraint could be violated by two inputs that are close to each otherbut on opposite sides of the boundary between the two sets of size n/2.This problem may readily be solved, however, by starting with aninterleaver for a block size of n/2+1 and constraining the last input tobe mapped to itself. This interleaver can again be designed by anymethod applicable to the construction of interleavers. The overallinterleaver of block size n can then be taken by deleting this last rowand forming the same construction as above. This yields a symmetricinterleaver for a block size of n, with the same s-parameter and ¼ ofthe normalized dispersion of the original interleaver. The sameprinciple may be used to design self-inverting interleavers that havehigh performance as measured by separation and dispersion.

[0059] It is possible, using various heuristic modifications of standardsearch procedures, to find self-inverting interleavers that haves-parameters and dispersions that are comparable to the bestunrestricted (not self-inverting) interleavers. In particular,interleavers/de-interleavers in accordance with the invention have anormalized s-parameter of at least 33 and a normalized dispersion of atleast 0.5. Particularly preferred embodiments of the invention haveinterleavers/de-interleavers with a normalized s-parameter of at least50 and a normalized dispersion of at least 0.67. The performance aboverepresents a lower bound on performance for self-inverting interleaversin accordance with one example embodiment of the present invention. Itshould be noted by those skilled in the art that the achievables-parameters rise in accordance with the length of the block. Themaximum possible s-parameter is provided by {square root}{square rootover (n)} achieved by the simple block interleavers mentioned above.Self-inverting interleavers may achieve more than 50% of this maximumvalue, while also providing good dispersion characteristics.

[0060] The present invention also includes turbo code interleavers thatprovide reasonable performance and high dispersion. As a starting point,the interleaver specification for an existing, non-self-invertinginterleaver of a given block length may be used. An example of such aspecification for a non-self-inverting interleaver is provided by the3GPP2 standard code interleaver (as defined in 3^(rd) GenerationPartnership Project 2, document 3GPP2 C.S0002-C, version1.0, May 28,2002). Such an interleaver may be specified by a complicated algorithmicmethod. The new self-inverting interleaver may be defined from theexisting specification in a way that it is guaranteed to beself-inverting. Such a self-inverting interleaver may be defined byspecifying sets of cycles. For example, the block length 5 interleaverexample provided above (i.e., with raw data bits 10011) is specified bythe rule (1->4->2) (3->5), where the last bit in each cycle isunderstood to map back to the first (2->1 and 5->3). As discussed above,such an interleaver is not self-inverting, since its period ofpermutation is greater than 2. A new interleaver can be defined that isguaranteed to have the self-inverting property by breaking up everyoriginal cycle provided by the non-self-inverting interleaverspecification which contains more than two bits into new cyclescontaining pairs of bits, starting at the beginning of each originalcycle and possibly leaving one bit over in its own new cycle. Continuingwith the example above, this would result in the self-invertinginterleaver being defined by new cycles (1->4) (2) (3->5). Thus bits 1and 4 change positions, bits 3 and 5 change positions, and bit 2 remainsin its original position. Such an interleaver is self-inverting as everynew cycle has a length of 2 at the most. The resulting interleaver willhave high dispersion and will work well within a turbo coding system.However, sometimes such interleavers may not have a high s-parameter.Interleavers created using this method are “deterministic” in the sensethat they are defined by a concise list of steps (i.e., all the stepsrequired to define the original interleaver and the final pairing offstep described above). The interleaver produced by this method is notthe same as the original interleaver, it is merely defined by referenceto it.

[0061] An ideal interleaver in accordance with the invention should havea high s-parameter, a high normalized dispersion and should be easy tophysically implement. It has been found that good performance can beobtained by implementing the above-described turbo code communicationssystem with a reasonable amount of complexity. To some extent,complexity is a matter of design choice and is largely a function of themethod of decoding of the two constituent convolutional codes togetherwith the number of decoding iterations. It is well known that the biterror probability at the output of a turbo decoder is approximatelyinversely proportional to the block length of the interleaver.Therefore, lower error probabilities can be achieved by utilizinginterleavers/de-interleavers with longer block sizes.

[0062] A randomized method can be used to generate non-self-invertinginterleavers. This method involves setting a target separation value sin advance. The method starts by mapping position 1 to a randomly chosenposition. The next step involves mapping position 2. Due to the targetseparation value, there are constraints on the position this can map to.The method computes all allowed values of the mapped position 2 that donot violate the separation target, and chooses one of these at random.The procedure continues to map further positions in the same way, aslong as this is possible. If at any step there are no possible outputpositions to map the next input position to, the procedure terminates infailure. The method is generally applied by running multiple runs of themethod at a given interleaver length and target separation, until onesuccessful run is obtained. The resulting dispersion tends to be gooddue to the randomized nature of the algorithm; if it is not, theprocedure may be re-run.

[0063] An improvement contemplated by the present invention generatesgood self-inverting interleavers by constraining the choices at eachstep described above by the self-inverting property. In choosing theoutput position, say j, corresponding to input position 1, the input jis simultaneously constrained to map to output 1. Due to thisconstraint, not all output positions j are allowed for input position 1,as some positions may violate the separation constraint. This methodcomputes all allowed output positions and chooses randomly among these.The procedure then continues analogously as to the remaining input bitpositions with the procedure outlined in the preceding paragraph. Whenthere are further positions to assign but no allowed output values forthem, the procedure set forth in the preceding paragraph gives up infailure. With the present invention, in the event of such a failure theentire process, or only certain portions of the process, may be undoneand rerun until all input bit positions are successfully mapped.

[0064] For example, in the event of such a failure, the results can bediscarded and the process can begin again staring with the mapping of afirst input bit position to a randomly chosen output bit position.Alternatively in the event of such a failure, the results of the mappingof the remaining input bit positions may be discarded and process may bererun using the determined mappings for input position j and outputposition j.

[0065] As further option in the event of failure, the last m choices canbe undone, where m is a heuristically set design parameter, and theprocedure is then continued from that point. The failure terminationcriterion is based on an overall runtime limit. Multiple runs of themethod with various choices for m are then carried out. This methodtends to give successful runs with much higher target separations. Thisis contrasted with the method of the preceding paragraph, which isrelatively unlikely to support high separations in one pass. Such highseparations are expected to be supportable, however, if somebacktracking is allowed as described herein.

[0066] Two examples self-inverting turbo code interleavers in accordancewith the present invention are provided in Appendix A attached hereto.Those skilled in the art should appreciate that the exampleself-inverting interleavers set forth in Appendix A are just twoexamples of interleavers in accordance with the present invention, andother self-inverting turbo code interleavers with longer or shorterblock lengths may also be generated which have the desired s-parameterand dispersion characteristics.

[0067] It should now be appreciated that the present invention providesadvantageous methods and apparatus for generating self-inverting turbocode interleavers, as well as methods and apparatus for encoding andcommunicating a data stream utilizing such self-inverting turbo codeinterleavers.

[0068] Although the invention has been described in connection withvarious illustrated embodiments, numerous modifications and adaptationsmay be made thereto without departing from the spirit and scope of theinvention as set forth in the claims.

Appendix A

[0069] Example Self-Inverting Interleavers:

[0070] Two example self-inverting interleavers are given below. In eachcase, the notation (i, j) indicates that the bits in positions i and jare interchanged under the action of the permutation. For clarity, bitsthat are not moved by the interleaver operation are indicated by thenotation (k, k).

[0071] Example 1: Turbo code block length 1024: For the interleaver oflength 1024 given below, the s-parameter is 22. Note that the maximumpossible s-parameter for an interleaver of this length is sqrt(1024)=32.The dispersion of this interleaver has not been determined, but as itwas generated via a pseudo-random process it is assumed to be close tothe 81% of maximum that would be expected of a randomly-constructedinterleaver.

[0072] (1, 446) (2, 991) (3, 302) (4, 955) (5, 407) (6, 131) (7, 510)(8, 473) (9, 236) (10, 37) (11, 891) (12, 761) (13, 718) (14, 496) (15,537) (16, 165) (17, 61) (18, 595) (19, 107) (20, 269) (21, 855) (22,651) (23, 324) (24, 191) (25, 347) (26, 687) (27, 430) (28, 795) (29,84) (30, 393) (31, 213) (32, 974) (33, 239) (34, 618) (35, 727) (36,475) (38, 1009) (39, 151) (40, 952) (41, 41) (42, 580) (43, 282) (44,118) (45, 890) (46, 555) (47, 929) (48, 818) (49, 689) (50, 519) (51,438) (52, 306) (53, 328) (54, 200) (55, 655) (56, 362) (57, 757) (58,630) (59, 720) (60, 997) (62, 255) (63, 397) (64, 172) (65, 859) (66,98) (67, 598) (68, 554) (69, 881) (70, 909) (71, 677) (72, 233) (73,779) (74, 515) (75, 576) (76, 433) (77, 331) (78, 360) (79, 653) (80,307) (81, 705) (82, 477) (83, 970) (85, 204) (86, 810) (87, 403) (88,631) (89, 112) (90, 267) (91, 857) (92, 1016) (93, 679) (94, 937) (95,994) (96, 889) (97, 577) (99, 508) (100, 141) (101, 762) (102, 601)(103, 737) (104, 701) (105, 164)(106, 788)(108, 220)(109, 244)(110, 385)(111, 964) (113, 652) (114, 531) (115, 278) (116, 363) (117, 450) (119,119) (120, 339) (121, 1020) (122, 933) (123, 196) (124, 879) (125, 836)(126, 590) (127, 813) (128, 426) (129, 157) (130, 614) (132, 566) (133,979) (134, 740) (135, 493) (136, 783) (137, 230) (138, 384) (139, 713)(140, 259) (142, 643) (143, 534) (144, 325) (145, 915) (146, 945) (147,1005) (148, 449) (149, 822) (150, 844) (152, 303) (153, 427) (154, 187)(155, 586) (156, 676) (158, 158) (159, 763) (160, 556) (161, 474) (162,874) (163, 243) (166, 266) (167, 712) (168, 505) (169, 960) (170, 533)(171, 1008) (173, 787) (174, 834) (175, 350) (176, 644) (177, 445) (178,617) (179, 396) (180, 180) (181, 291) (182, 667) (183, 205) (184, 986)(185, 313) (186, 418) (188, 934) (189, 374) (190, 703) (192, 908) (193,860) (194, 746) (195, 885) (197, 825) (198, 544) (199, 488) (201, 512)(202, 465) (203, 645) (206, 257) (207, 304) (208, 613) (209, 1004) (210,569) (211, 333) (212, 669) (214, 913) (215, 796) (216, 408) (217, 940)(218, 861) (219, 729) (221, 821) (222, 980) (223, 543) (224, 707) (225,279) (226, 765) (227, 460) (228, 376) (229, 256) (231, 305) (232, 232)(234, 581) (235, 605) (237, 482) (238, 649) (240, 338) (241, 901) (242,869) (245, 422) (246, 520) (247, 987) (248, 965) (249, 715) (250, 367)(251, 837) (252, 790) (253, 682) (254, 290) (258, 551) (260, 260) (261,619) (262, 744) (263, 579) (264, 768) (265, 647) (268, 406) (270, 871)(271, 916) (272, 521) (273, 893) (274, 835) (275, 484) (276, 963) (277,343) (280, 451) (281, 992) (283, 309) (284, 706) (285, 369) (286, 545)(287, 626) (288, 782) (289, 662) (292, 578) (293, 863) (294, 730) (295,906) (296, 809) (297, 831) (298, 968) (299, 429) (300, 752) (301, 511)(308, 548) (310, 398) (311, 336) (312, 1014) (314, 467) (315, 858) (316,941) (317, 723) (318, 610) (319, 805) (320, 371) (321, 587) (322, 753)(323, 911) (326, 648) (327, 686) (329, 883) (330, 552) (332, 414) (334,967) (335, 502) (337, 989) (340, 620) (341, 942) (342, 527) (344, 1022)(345, 441) (346, 728) (348, 390) (349, 905) (351, 811) (352, 680) (353,479) (354, 755) (355, 596) (356, 873) (357, 504) (358, 358) (359, 789)(361, 971) (364, 636) (365, 561) (366, 993) (368, 532) (370, 1017) (372,923) (373, 412) (375, 830) (377, 599) (378, 878) (379, 900) (380, 697)(381, 673) (382, 468) (383, 442) (386, 386) (387, 490) (388, 771) (389,951) (391, 641) (392, 525) (394, 990) (395, 733) (399, 1012) (400, 823)(401, 793) (402, 877) (404, 850) (405, 553) (409, 670) (410, 612) (411,760) (413, 413) (415, 693) (416, 585) (417, 947) (419, 634) (420, 914)(421, 975) (423, 828) (424, 513) (425, 491) (428, 875) (431, 851) (432,454) (434, 659) (435, 1002) (436, 725) (437, 702) (439, 766) (440, 574)(443, 606) (444, 546) (447, 814) (448, 925) (452, 792) (453, 868) (455,480) (456, 966) (457, 988) (458, 458) (459, 518) (461, 842) (462, 767)(463, 717) (464, 692) (466, 624) (469, 583) (470, 559) (471, 656) (472,741) (476, 816) (478, 959) (481, 932) (483, 1013) (485, 910) (486, 852)(487, 884) (489, 699) (492, 522) (494, 665) (495, 608) (497, 786) (498,498) (499, 756) (500, 734) (501, 969) (503, 943) (506, 824) (507, 642)(509, 847) (510, 547) (514, 572) (516, 671) (517, 912) (523, 800) (524,981) (526, 1021) (528, 724) (529, 637) (530, 944) (535, 758) (536, 591)(538, 826) (539, 849) (540, 888) (541, 919) (542, 542) (549, 780) (550,684) (557, 1000) (558, 709) (560, 807) (562, 584) (563, 962) (564, 735)(565, 907) (567, 621) (568, 938) (571, 840) (573, 664) (575, 776) (582,817) (588, 726) (589, 751) (592, 698) (593, 593) (594, 894) (597, 635)(600, 856) (602, 794) (603, 949) (604, 983) (607, 1011) (609, 921) (611,739) (615, 700) (616, 672) (622, 827) (623, 866) (625, 625) (627, 977)(628, 953) (629, 896) (632, 773) (633, 743) (638, 804) (639, 918) (640,675) (646, 999) (650, 958) (654, 854) (657, 704) (658, 774) (660, 832)(661, 882) (663, 799) (666, 924) (668, 732) (674, 1010) (678, 954) (681,978) (683, 846) (685, 798) (688, 688) (690, 917) (691, 820) (694, 759)(695, 719) (696, 1001) (708, 956) (710, 862) (711, 886) (714, 927) (716,1024) (721, 802) (722, 839) (731, 770) (736, 957) (738, 920) (742, 867)(745, 808) (747, 982) (748, 1006) (749, 838) (750, 895) (754, 785) (764,872) (769, 950) (772, 897) (775, 829) (777, 801) (778, 928) (781, 985)(784, 1015) (791, 961) (797, 892) (803, 803) (806, 845) (812, 1007)(815, 976) (819, 931) (833, 904) (841, 972) (843, 939) (848, 870) (853,998) (864, 902) (865, 926) (876, 948) (880, 996) (887, 922) (898, 898)(899, 946) (903, 1003) (930, 930) (935, 984) (936, 1023) (973, 1018)(995, 995) (1019, 1019).

[0073] Example 2: Turbo code block length 2048: For the interleaver oflength 2048 given below, the s-parameter is 30. Note that no interleaverof this length can achieve an s-parameter of higher than sqrt(2048)rounded down, i.e., 45. The normalized dispersion for this interleaverwas not determined, but as in example 1 it was generated pseudorandomly.

[0074] (1, 236) (2, 1460) (3, 1648) (4, 39) (5, 1688) (6, 1727) (7, 916)(8, 527) (9, 427) (10, 1772) (11, 558) (12, 482) (13, 1427) (14, 1393)(15, 1984) (16, 1848) (17, 856) (18, 1322) (19, 999) (20, 386) (21,1569) (22, 1049) (23, 1289) (24, 802) (25, 1802) (26, 1599) (27, 153)(28, 292) (29, 675) (30, 1170) (31, 707) (32, 639) (33, 113) (34, 217)(35, 1117) (36, 1708) (37, 1527) (38, 925) (40, 72) (41, 1753) (42,1213) (43, 765) (44, 1472) (45, 465) (46, 1849) (47, 1676) (48, 432)(49, 969) (50, 881) (51, 1084) (52, 1365) (53, 1023) (54, 507) (55, 185)(56, 1887) (57, 1924) (58, 365) (59, 1991) (60, 247) (61, 557) (62,1627) (63, 817) (64, 1595) (65, 1168) (66, 2046) (67, 851) (68, 1259)(69, 149) (70, 1429) (71, 1505) (73, 643) (74, 1053) (75, 1297) (76,1469) (77, 1560) (78, 603) (79, 917) (80, 1835) (81, 455) (82, 1371)(83, 1957) (84, 1124) (85, 730) (86, 202) (87, 1338) (88, 1792) (89,360) (90, 520) (91, 268) (92, 1742) (93, 1697) (94, 327) (95, 700) (96,1993) (97, 2031) (98, 1161) (99, 1643) (100, 1013) (101, 761) (102, 151)(103, 1885) (104, 1404) (105, 1076) (106, 958) (107, 1917) (108, 1508)(109, 800) (110, 1210) (111, 475) (112, 237) (114, 114) (115, 1240)(116, 1441) (117, 1604) (118, 550) (119, 442) (120, 860) (121, 396)(122, 594) (123, 913) (124, 1475) (125, 1771) (126, 1994) (127, 1271)(128, 353) (129, 1120) (130, 1178) (131, 2034) (132, 1950) (133, 1374)(134, 1022) (135, 701) (136, 1664) (137, 1866) (138, 1515) (139, 804)(140, 1313) (141, 514) (142, 279) (143, 752) (144, 982) (145, 1897)(146, 671) (147, 1732) (148, 1086) (150, 150) (152, 196) (154, 875)(155, 912) (156, 310) (157, 1445) (158, 1559) (159, 637) (160, 456)(161, 1122) (162, 1944) (163, 1261) (164, 2008) (165, 575) (166, 1034)(167, 1788) (168, 1655) (169, 232) (170, 1624) (171, 1589) (172, 1172)(173, 793) (174, 491) (175, 1699) (176, 753) (177, 841) (178, 354) (179,1819) (180, 384) (181, 1328) (182, 1749) (183, 415) (184, 723) (186,687) (187, 1363) (188, 536) (189, 629) (190, 1456) (191, 1538) (192,1066) (193, 971) (194, 1498) (195, 2037) (197, 1423) (198, 2007) (199,1128) (200, 270) (201, 1578) (203, 1275) (204, 1915) (205, 1703) (206,478) (207, 1867) (208, 593) (209, 1185) (210, 1012) (211, 362) (212,1311) (213, 822) (214, 1632) (215, 717) (216, 862) (218, 928) (219, 513)(220, 323) (221, 431) (222, 1354) (223, 789) (224, 1391) (225, 1673)(226, 1824) (227, 1958) (228, 543) (229, 974) (230, 1229) (231, 1600)(233, 631) (234, 1757) (235, 1925) (238, 677) (239, 751) (240, 1893)(241, 1262) (242, 1470) (243, 1988) (244, 467) (245, 1790) (246, 1721)(248, 1631) (249, 1007) (250, 1153) (251, 1056) (252, 1504) (253, 378)(254, 288) (255, 1862) (256, 939) (257, 867) (258, 1323) (259, 332)(260, 1220) (261, 782) (262, 503) (263, 1360) (264, 605) (265, 1431)(266, 897) (267, 1108) (269, 1596) (271, 690) (272, 1543) (273, 1463)(274, 829) (275, 745) (276, 443) (277, 1811) (278, 1775) (280, 1705)(281, 541) (282, 1945) (283, 1184) (284, 1512) (285, 1270) (286, 1977)(287, 1646) (289, 1307) (290, 978) (291, 291) (293, 492) (294, 347)(295, 2024) (296, 1882) (297, 644) (298, 398) (299, 1137) (300, 876)(301, 1102) (302, 1044) (303, 1576) (304, 1014) (305, 702) (306, 1736)(307, 910) (308, 1337)(309, 1232)(311, 430)(312, 948)(313, 1773)(314,771)(315, 1837)(316, 1704) (317, 819) (318, 1181) (319, 1616) (320, 734)(321, 1462) (322, 1503) (324, 1659) (325, 597) (326, 981) (328, 1535)(329, 564) (330, 330) (331, 1954) (333, 526) (334, 1884) (335, 1148)(336, 668) (337, 1031) (338, 1064) (339, 1914) (340, 883) (341, 1278)(342, 1098) (343, 395) (344, 1428) (345, 1382) (346, 471) (348, 2002)(349, 1709) (350, 1324) (351, 2038) (352, 1234) (355, 1204) (356, 1845)(357, 1747) (358, 947) (359, 759) (361, 1620) (363, 612) (364, 1506)(366, 1550) (367, 721) (368, 425) (369, 1783) (370, 1150) (371, 810)(372, 1940) (373, 579) (374, 512) (375, 669) (376, 1361) (377, 915)(379, 1474) (380, 1314) (381, 1663) (382, 1249) (383, 1695) (385, 385)(387, 1981) (388, 1281) (389, 1082) (390, 863) (391, 1870) (392, 1028)(393, 1196) (394, 470) (397, 2013) (399, 617) (400, 1630) (401, 995)(402, 741) (403, 587) (404, 1838) (405, 1407) (406, 555) (407, 1162)(408, 1738) (409, 955) (410, 703) (411, 1112) (412, 898) (413, 1341)(414, 1938) (416, 806) (417, 1373) (418, 509) (419, 1252) (420, 1701)(421, 1593) (422, 1562) (423, 423) (424, 1071) (426, 1029) (428, 1500)(429, 1444) (433, 740) (434, 1654) (435, 1300) (436, 850) (437, 2011)(438, 1530) (439, 601) (440, 1875) (441, 658) (444, 1829) (445, 551)(446, 1406) (447, 1370) (448, 688) (449, 1748) (450, 1799) (451, 776)(452, 1215) (453, 1913) (454, 1088) (457, 970) (458, 488) (459, 1698)(460, 1332) (461, 1177) (462, 932) (463, 1450) (464, 1651) (466, 1016)(468, 1245) (469, 606) (472, 1118) (473, 858) (474, 726) (476, 1514)(477, 576) (479, 1610) (480, 1779) (481, 519) (483, 1277) (484, 1971)(485, 1544) (486, 1575) (487, 640) (489, 1389) (490, 1208) (493, 909)(494, 1159) (495, 1817) (496, 1339) (497, 2028) (498, 1072) (499, 1426)(500, 1855) (501, 997) (502, 1892) (504, 960) (505, 1922) (506, 767)(508, 1728) (510, 1679) (511, 846) (515, 578) (516, 1129) (517, 1495)(518, 1960) (521, 1547) (522, 628) (523, 1647) (524, 1761) (525, 670)(528, 1057) (529, 1796) (530, 1394) (531, 1284) (532, 1228) (533, 1018)(534, 933) (535, 1910) (537, 1329) (538, 808) (539, 1443) (540, 1731)(542, 849) (544, 967) (545, 1190) (546, 592) (547, 1158) (548, 2045)(549, 549) (552, 1113) (553, 2009) (554, 774) (556, 722) (559, 657)(560, 1077) (561, 885) (562, 1409) (563, 1513) (565, 624) (566, 1574)(567, 935) (568, 1629) (569, 1978) (570, 1480) (571, 1948) (572, 1223)(573, 1288) (574, 1865) (577, 979) (580, 821) (581, 1026) (582, 1257)(583, 1810) (584, 1678) (585, 775) (586, 738) (588, 697) (589, 1355)(590, 1774) (591, 1740) (595, 663) (596, 1434) (598, 1398) (599, 1566)(600, 1601) (602, 1090) (604, 1982) (607, 855) (608, 1634) (609, 1169)(610, 1211) (611, 888) (613, 1134) (614, 1531) (615, 1243) (616, 1468)(618, 924) (619, 1000) (620, 708) (621, 1037) (622, 2035) (623, 1907)(625, 805) (626, 1353) (627, 627) (630, 968) (632, 1852) (633, 755)(634, 1997) (635, 1759) (636, 1285) (638, 1642) (641, 1499) (642, 1612)(645, 1540) (646, 1250) (647, 1577) (648, 1424) (649, 1176) (650, 1384)(651, 1815) (652, 864) (653, 1100) (654, 998) (655, 695) (656, 1136)(659, 900) (660, 1209) (661, 1344) (662, 1729) (664, 1949) (665, 1785)(666, 833) (667, 729) (672, 1665) (673, 1633) (674, 1859) (676, 959)(678, 1060) (679, 1588) (680, 1890) (681, 1413) (682, 1244) (683, 1481)(684, 1446) (685, 2026) (686, 781) (689, 1296) (691, 1193) (692, 1554)(693, 1343) (694, 1825) (696, 812) (698, 1743) (699, 1932) (704, 1986)(705, 1656) (706, 1133) (709, 1860) (710, 1791) (711, 1024) (712, 930)(713, 1898) (714, 896) (715, 2019) (716, 1497) (718, 1421) (719, 985)(720, 1465) (724, 724) (725, 1054) (727, 1310) (728, 830) (731, 1687)(732, 1534) (733, 1225) (735, 768) (736, 1735) (737, 1175) (739, 1625)(742, 1777) (743, 1256) (744, 1846) (746, 1967) (747, 2030) (748, 882)(749, 1347) (750, 1114) (754, 1440) (756, 1070) (757, 923) (758, 962)(760, 1999) (762, 1565) (763, 1479) (764, 1403) (766, 835) (769, 769)(770, 1174) (772, 1769) (773, 1237) (777, 1006) (778, 1692) (779, 886)(780, 1525) (783, 1956) (784, 1303) (785, 1906) (786, 1439) (787, 1653)(788, 1623) (790, 1345) (791, 1830)(792, 2041) (794, 1800) (795, 919)(796, 1397) (797, 848) (798, 1127) (799, 1092) (801, 2010) (803, 1157)(807, 1764) (809, 1558) (811, 1733) (813, 1592) (814, 1693) (815, 1188)(816, 1511) (818, 1929) (820, 1038) (823, 1476) (824, 1969) (825, 1432)(826, 1821) (827, 1231) (828, 946) (831, 1395) (832, 1005) (834, 1125)(836, 1087) (837, 902) (838, 1784) (839, 839) (840, 1321) (842, 1362)(843, 1561) (844, 1280) (845, 1639) (847, 2006) (852, 1856) (853, 1507)(854, 1974) (857, 1051) (859, 1436) (861, 2036) (865, 1179) (866, 937)(868, 1894) (869, 1093) (870, 1399) (871, 1226) (872, 1350) (873, 1715)(874, 1552) (877, 1941) (878, 1793) (879, 990) (880, 1294) (884, 1582)(887, 1258) (889, 1477) (890, 1138) (891, 1834) (892, 892) (893, 1619)(894, 1658) (895, 1173)(899, 1751)(901, 1039)(903, 1325)(904, 1714)(905,1435)(906, 1509)(907, 1069)(908, 1899)(911, 1947)(914, 1801) (918, 980)(920, 1556) (921, 1116) (922, 1383) (926, 1167) (927, 1265) (929, 1230)(931, 1992) (934, 2027) (936, 1302) (938, 1524) (940, 1832) (941, 1606)(942, 1756) (943, 1333) (944, 1726) (945, 1670) (949, 1487) (950, 950)(951, 1640) (952, 1130) (953, 1050) (954, 1563) (956, 1864) (957, 1786)(961, 1199) (963, 1390) (964, 1085) (965, 2018) (966, 1902) (972, 1019)(973, 1442) (975, 1754) (976, 1973) (977, 1943) (983, 1518) (984, 1671)(986, 1716) (987, 987) (988, 1351) (989, 1807) (991, 1483) (992, 1255)(993, 1621) (994, 1315) (996, 1840) (1001, 1141) (1002, 1911) (1003,1171) (1004, 1078) (1008, 2016) (1009, 1579) (1010, 1549)(1011,1043)(1015, 1218)(1017, 1877)(1020, 1668)(1021, 1482)(1025, 1618) (1027,1962) (1030, 1706) (1032, 1430) (1033, 1166) (1035, 1342) (1036, 1295)(1040, 1378) (1041, 1998) (1042, 1042) (1045, 1528) (1046, 1809) (1047,1766) (1048, 1264)(1052, 1203)(1055, 1611)(1058, 1851)(1059, 1567)(1061,1119)(1062, 1923) (1063, 1152) (1065, 1645) (1067, 1959) (1068, 1491)(1073, 1681) (1074, 1381) (1075, 1459) (1079, 1292) (1080, 1080) (1081,1420) (1083, 1202) (1089, 1238) (1091, 1880) (1094, 1826) (1095, 1765)(1096, 1139) (1097, 1580) (1099, 1928) (1101, 1644) (1103, 1331)(1104,1614)(1105, 1966)(1106, 1372)(1107, 1795)(1109, 1683)(1110, 1539) (1111,1293) (1115, 2014) (1121, 1239) (1123, 2047) (1126, 1433) (1131, 1927)(1132, 1464)(1135, 1587)(1140, 1628)(1142, 1551)(1143, 1359)(1144,1319)(1145, 1402) (1146, 1684) (1147, 1207) (1149, 1844) (1151, 1770)(1154, 1253) (1155, 1878) (1156, 1739)(1160, 1965)(1163, 1453)(1164,1806)(1165, 1912)(1180, 1216)(1182, 1410) (1183, 1529) (1186, 1603)(1187, 2022) (1189, 1755) (1191, 1246) (1192, 1989) (1194, 1279)(1195,1573)(1197, 1871)(1198, 1457)(1200, 1903)(1201, 1493)(1205, 1700) (1206,1367) (1212, 1212) (1214, 1936) (1217, 1641) (1219, 1608) (1221, 1812)(1222, 1317) (1224, 1737) (1227, 1555) (1233, 1975) (1235, 1492) (1236,1396) (1241, 1674) (1242, 1458) (1247, 1348) (1248, 2023) (1251, 1804)(1254, 1863) (1260, 1763) (1263, 1730) (1266, 1266) (1267, 1309) (1268,1939) (1269, 1408) (1272, 1536) (1273, 1609) (1274, 1447) (1276, 1490)(1282, 1368) (1283, 1694) (1286, 1570) (1287, 1886) (1290, 1650) (1291,1987) (1298, 1336) (1299, 2020) (1301, 1782) (1304, 1839) (1305, 1942)(1306, 1484) (1308, 1532) (1312, 1380) (1316, 1590) (1318, 1745) (1320,1437) (1326, 1896) (1327, 1675) (1330, 1330) (1334, 1979) (1335, 1789)(1340, 1850) (1346, 1710) (1349, 1741) (1352, 1617) (1356, 1548) (1357,1502) (1358, 2025) (1364, 1895) (1366, 1803) (1369, 1930) (1375, 1586)(1376, 1454) (1377, 1416) (1379, 1858) (1385, 1712) (1386, 1545) (1387,1666) (1388, 2000) (1392, 1963) (1400, 1901) (1401, 1486) (1405,1797)(1411, 1411)(1412, 1605)(1414, 2043)(1415, 1828)(1417, 1517)(1418,1933) (1419, 2005) (1422, 1861) (1425, 1691) (1438, 1891) (1448, 1794)(1449, 1510) (1451, 1615) (1452, 1746) (1455, 1661) (1461, 1836) (1466,1921) (1467, 1541) (1471, 1952) (1473, 1888) (1478, 1805) (1485, 1635)(1488, 2003)-(1489, 2040) (1494, 1494) (1496, 1696) (1501, 1584) (1516,1626) (1519, 1926) (1520, 1657) (1521, 1879) (1522, 1768) (1523, 1820)(1526, 1689) (1533, 1533) (1537, 1722) (1542, 1968) (1546, 1622) (1553,1909) (1557, 1677) (1564, 1827) (1568, 1568) (1571, 2021) (1572, 1723)(1581, 1980) (1583, 1934) (1585, 1900) (1591, 1869) (1594, 1822) (1597,1680) (1598, 1781) (1602, 2044) (1607, 1718) (1613, 1983) (1636, 1750)(1637, 1854) (1638, 1711) (1649, 1649) (1652, 1889) (1660, 1813) (1662,1964) (1667, 1778) (1669, 1843) (1672, 1724) (1682, 1931) (1685, 2033)(1686, 1876) (1690, 2001) (1702, 1744) (1707, 1707) (1713, 1833) (1717,1787) (1719, 1920) (1720, 1961) (1725, 2017) (1734, 1881) (1752, 1816)(1758, 2032) (1760, 1919) (1762, 1985) (1767, 1767) (1776, 1951) (1780,1872) (1798, 1841) (1808, 1946) (1814, 1908) (1818, 2015) (1823, 2048)(1831, 1873) (1842, 1842) (1847, 1970) (1853, 2012) (1857, 1904) (1868,1937) (1874, 1874) (1883, 1976) (1905, 2042) (1916, 1972) (1918, 2004)(1935, 2039) (1953, 1953) (1955, 1990) (1995, 1995) (1996, 2029).

What is claimed is:
 1. A method of generating a self-inverting turbocode interleaver from an existing non-self-inverting turbo codeinterleaver specification, comprising: identifying a plurality oforiginal cycles of the non-self-inverting turbo code interleaverspecification, said original cycles specifying a mapping of an input bitposition to a respective output bit position for raw data bits to becoded, where the last bit identified in each cycle is mapped to anoutput position corresponding to the first bit in said original cycle;breaking up each original cycle containing more than two bits into newcycles, each new cycle containing one pair of bits, said pair of bitsfor each successive cycle being taken from successive pairs of bits ofsaid original cycle beginning with the first bit in each cycle, whereineach original cycle having an odd number of bits provides: (i) at leastone new cycle containing a pair of bits; and (ii) one new cycle having asingle bit; wherein said new cycles define the mapping between the inputand output bit positions for said self-inverting turbo code interleaver.2. A method in accordance with claim 1, wherein the self-inverting turbocode interleaver has a normalized dispersion of at least 0.33.
 3. Amethod in accordance with claim 2, wherein said self-inverting turbocode interleaver has a normalized s-parameter of at least
 33. 4. Amethod in accordance with claim 1, wherein said non-self-invertinginterleaver is a block interleaver.
 5. A method in accordance with claim4, wherein said block length of said interleaver is at least
 1024. 6. Amethod for randomly generating a self-inverting turbo code interleaver,comprising: (a) setting a minimum target separation value S, such thattwo input bits less than S apart at the input are at least S apart atthe output of the interleaver; (b) mapping a first input bit position toa randomly chosen output bit position j; (c) constraining input positionj to map to said first input bit position, j being randomly chosen fromall allowed output positions which do not violate the target separationvalue S; (d) for each of the remaining input bits, in sequence:computing all remaining allowed output bit positions of each successiveinput bit that does not violate the target separation value S when aninput bit position corresponding to the allowed output bit position isconstrained to map to an output position corresponding to the respectivesuccessive input bit position; choosing one of the remaining allowedoutput bit positions of the respective input bit at random; constrainingthe input bit position corresponding to the chosen output bit to map toan output bit position corresponding to the respective successive inputbit position.
 7. A method in accordance with claim 6, furthercomprising: in the event that step (d) results in failure when noremaining output bit positions are allowed for one of said remaininginput bits, discarding results of steps (b-d) and repeating steps (b-d)until all of the input bits are mapped to corresponding allowed outputvalues.
 8. A method in accordance with claim 6, further comprising: inthe event that step (d) results in failure when no remaining output bitpositions are allowed for one of said remaining input bits, discardingresults of step (d) and repeating step (d) until all of said remaininginput bits are mapped to corresponding allowed output values.
 9. Amethod in accordance with claim 6, further comprising: in the event thatstep (d) results in failure when no remaining output bit positions areallowed for one of said remaining input bits, discarding results of step(d) for a selected number of m previous bits in the sequence prior tosaid failure and repeating step (d) beginning with said mth previous bitin said sequence.
 10. A method in accordance with claim 9, wherein mvaries with each successive iteration of step (d).
 11. A method forencoding digital data for transmission; encoding an original data streamwith a first convolutional code to produce a first convolutionally codeddata stream; interleaving a copy of said original data stream using aself-inverting turbo code interleaver having at least one of anormalized s-parameter of at least 33 and a normalized dispersion of atleast 0.5 to produce an interleaved data stream; encoding theinterleaved data stream with a second convolutional code to produce asecond convolutionally coded data stream; combining the firstconvolutionally coded data stream and the second convolutionally codeddata stream to provide a combined data stream; modulating the combineddata stream for transmission via a communications network.
 12. A methodin accordance with claim 11, wherein said normalized s-parameter isprovided by: normalized s-parameter=100(s/{square root}{square root over(n)}).
 13. A method in accordance with claim 11, wherein thecommunications system comprises at least one of a global communicationsystem, an Internet, an extranet, a wide area network, a local areanetwork, or a wireless network.
 14. A method in accordance with claim11, wherein the normalized dispersion is at least 0.67 and thenormalized s-parameter is at least
 50. 15. A method for communicating adata stream, comprising: encoding an original data stream with a firstconvolutional code to produce a first convolutionally coded data stream;interleaving a copy of said original data stream using a self-invertingturbo code interleaver having at least one of a normalized s-parameterof at least 33 and a normalized dispersion of at least 0.5 to produce aninterleaved data stream; encoding the interleaved data stream with asecond convolutional code to produce a second convolutionally coded datastream; combining the first convolutionally coded data stream and thesecond convolutionally coded data stream to provide a combined datastream; modulating the combined data stream; transmitting the modulatedcombined data stream via a communications network; receiving themodulated combined data stream; demodulating the modulated combined datastream; first pass decoding and de-interleaving of said first and secondconvolutionally coded data streams by: decoding the firstconvolutionally coded data stream to produce first reliability estimatesfor raw data bits of the original data stream; de-interleaving the firstreliability estimates to produce de-interleaved first reliabilityestimates; decoding the second convolutionally coded data stream usingsaid de-interleaved first reliability estimates to produce secondreliability estimates for said raw data bits of said original datastream; and de-interleaving said second reliability estimates to providede-interleaved second reliability estimates; and feeding saidde-interleaved second reliability estimates into a second pass decodingand de-interleaving of said first and second convolutionally coded datastreams to recover said original data stream.
 16. A method in accordancewith claim 15, wherein said normalized s-parameter is provided by:normalized s-parameter=100(s/{square root}{square root over (n)}).
 17. Amethod in accordance with claim 15, further comprising: additionaldecoding and de-interleaving passes, as necessary, to recover saidoriginal data stream.
 18. Apparatus for encoding digital data fortransmission; a first encoder for encoding an original data stream witha first convolutional code to produce a first convolutionally coded datastream; a self-inverting turbo code interleaver for interleaving a copyof said original data stream to produce an interleaved data stream, saidself-inverting turbo code interleaver having at least one of anormalized s-parameter of at least 33 and a normalized dispersion of atleast 0.5; a second encoder for encoding the interleaved data streamwith a second convolutional code to produce a second convolutionallycoded data stream; a combiner for combining the first convolutionallycoded data stream and the second convolutionally coded data stream toprovide a combined data stream; a modulator for modulating the combineddata stream for transmission via a communications network.
 19. Apparatusin accordance with claim 18, wherein said normalized s-parameter isprovided by: normalized s-parameter=100(s/{square root}{square root over(n)}).
 20. Apparatus in accordance with claim 18, wherein thecommunications system comprises at least one of a global communicationsystem, an Internet, an extranet, a wide area network, a local areanetwork, or a wireless network.
 21. Apparatus in accordance with claim18, wherein the normalized dispersion is at least 0.67 and thenormalized s-parameter is at least
 50. 22. Apparatus for communicating adata stream, comprising: a first encoder for encoding an original datastream with a first convolutional code to produce a firstconvolutionally coded data stream; a self-inverting turbo codeinterleaver for interleaving a copy of said original data stream toproduce an interleaved data stream, said self-inverting turbo codeinterleaver having at least one of a normalized s-parameter of at least33 and a normalized dispersion of at least 0.5; a second encoder forencoding the interleaved data stream with a second convolutional code toproduce a second convolutionally coded data stream; a combiner forcombining the first convolutionally coded data stream and the secondconvolutionally coded data stream to provide a combined data stream; amodulator for modulating the combined data stream; a transmitter fortransmitting the modulated combined data stream via a communicationsnetwork; a receiver for receiving the modulated combined data stream; ademodulator for demodulating the modulated combined data stream; a firstdecoder for decoding the first convolutionally coded data stream toproduce first reliability estimates for raw data bits of the originaldata stream; a first de-interleaver for de-interleaving the firstreliability estimates to produce de-interleaved first reliabilityestimates; a second decoder for decoding the second convolutionallycoded data stream using said de-interleaved first reliability estimatesto produce second reliability estimates for said raw data bits of saidoriginal data stream; and a second de-interleaver for de-interleavingsaid second reliability estimates to provide de-interleaved secondreliability estimates; and a feedback loop for feeding saidde-interleaved second reliability estimates into said first decoder forsecond pass decoding and de-interleaving of said first and secondconvolutionally coded data streams to recover said original data stream.23. Apparatus in accordance with claim 22, wherein said normalizeds-parameter is provided by: normalized s-parameter=100(s/{squareroot}{square root over (n)}).
 24. Apparatus in accordance with claim 22,wherein: additional decoding and de-interleaving passes are performed,as necessary, to recover said original data stream.
 25. A method forencoding digital data for transmission; encoding an original data streamwith a first convolutional code to produce a first convolutionally codeddata stream; interleaving said first convolutionally coded data streamusing a self-inverting turbo code interleaver having at least one of anormalized s-parameter of at least 33 and a normalized dispersion of atleast 0.5 to produce an interleaved data stream; encoding theinterleaved data stream with a second convolutional code to produce asecond convolutionally coded data stream; combining the firstconvolutionally coded data stream and the second convolutionally codeddata stream to provide a combined data stream; modulating the combineddata stream for transmission via a communications network.
 26. A methodin accordance with claim 25, wherein said normalized s-parameter isprovided by: normalized s-parameter=100(s/{square root}{square root over(n)}).
 27. A method in accordance with claim 25, wherein thecommunications system comprises at least one of a global communicationsystem, an Internet, an extranet, a wide area network, a local areanetwork, or a wireless network.
 28. A method in accordance with claim25, wherein the normalized dispersion is at least 0.67 and thenormalized s-parameter is at least
 50. 29. A method for communicating adata stream, comprising: encoding an original data stream with a firstconvolutional code to produce a first convolutionally coded data stream;interleaving said convolutionally coded data stream using aself-inverting turbo code interleaver having at least one of anormalized s-parameter of at least 33 and a normalized dispersion of atleast 0.5 to produce an interleaved data stream; encoding theinterleaved data stream with a second convolutional code to produce asecond convolutionally coded data stream; combining the firstconvolutionally coded data stream and the second convolutionally codeddata stream to provide a combined data stream; modulating the combineddata stream; transmitting the modulated combined data stream via acommunications network; receiving the modulated combined data stream;demodulating the modulated combined data stream; first pass decoding andde-interleaving of said first and second convolutionally coded datastreams by: decoding the first convolutionally coded data stream toproduce first reliability estimates for raw data bits of the originaldata stream; de-interleaving the first reliability estimates to producede-interleaved first reliability estimates; decoding the secondconvolutionally coded data stream using said de-interleaved firstreliability estimates to produce second reliability estimates for saidraw data bits of said original data stream; and de-interleaving saidsecond reliability estimates to provide de-interleaved secondreliability estimates; and feeding said de-interleaved secondreliability estimates into a second pass decoding and de-interleaving ofsaid first and second convolutionally coded data streams to recover saidoriginal data stream.
 30. A method in accordance with claim 29, whereinsaid normalized s-parameter is provided by: normalizeds-parameter=100(s/{square root}{square root over (n)}).
 31. A method inaccordance with claim 29, further comprising: additional decoding andde-interleaving passes, as necessary, to recover said original datastream.
 32. Apparatus for encoding digital data for transmission, afirst encoder for encoding an original data stream with a firstconvolutional code to produce a first convolutionally coded data stream;a self-inverting turbo code interleaver for interleaving said firstconvolutionally coded data stream to produce an interleaved data stream,said self-inverting turbo code interleaver having at least one of anormalized s-parameter of at least 33 and a normalized dispersion of atleast 0.5; a second encoder for encoding the interleaved data streamwith a second convolutional code to produce a second convolutionallycoded data stream; a combiner for combining the first convolutionallycoded data stream and the second convolutionally coded data stream toprovide a combined data stream; a modulator for modulating the combineddata stream for transmission via a communications network.
 33. Apparatusin accordance with claim 32, wherein said normalized s-parameter isprovided by: normalized s-parameter=100(s/{square root}{square root over(n)}).
 34. Apparatus in accordance with claim 32, wherein thecommunications system comprises at least one of a global communicationsystem, an Internet, an extranet, a wide area network, a local areanetwork, or a wireless network.
 35. Apparatus in accordance with claim32, wherein the normalized dispersion is at least 0.67 and thenormalized s-parameter is at least
 50. 36. Apparatus for communicating adata stream, comprising: a firts encoder for encoding an original datastream with a first convolutional code to produce a firstconvolutionally coded data stream; a self-inverting turbo codeinterleaver for interleaving said first convolutionally coded datastream to produce an interleaved data stream, said self-inverting turbocode interleaver having at least one of a normalized s-parameter of atleast 33 and a normalized dispersion of at least 0.5; a second encoderfor encoding the interleaved data stream with a second convolutionalcode to produce a second convolutionally coded data stream; a combinerfor combining the first convolutionally coded data stream and the secondconvolutionally coded data stream to provide a combined data stream; amodulator for modulating the combined data stream; a transmitter fortransmitting the modulated combined data stream via a communicationsnetwork; a receiver for receiving the modulated combined data stream; ademodulator for demodulating the modulated combined data stream; a firstdecoder for decoding the first convolutionally coded data stream toproduce first reliability estimates for raw data bits of the originaldata stream; a first de-interleaver for de-interleaving the firstreliability estimates to produce de-interleaved first reliabilityestimates; a second decoder for decoding the second convolutionallycoded data stream using said de-interleaved first reliability estimatesto produce second reliability estimates for said raw data bits of saidoriginal data stream; and a second de-interleaver for de-interleavingsaid second reliability estimates to provide de-interleaved secondreliability estimates; and a feedback loop for feeding saidde-interleaved second reliability estimates into said first decoder forsecond pass decoding and de-interleaving of said first and secondconvolutionally coded data streams to recover said original data stream.37. Apparatus in accordance with claim 36, wherein said normalizeds-parameter is provided by: normalized s-parameter=100(/{squareroot}{square root over (n)}).
 38. Apparatus in accordance with claim 36,wherein: additional decoding and de-interleaving passes are performed,as necessary, to recover said original data stream.